import Vue from 'vue'
import Vuex,{ Store } from 'vuex'

Vue.use(Vuex)

export default new Vuex.Store({
  state:{ //类似于 vue的data
    //防止第一次取不到值
    car:JSON.parse(localStorage.getItem("car")||'[]'),
    count:1
  },
  getters:{
    getAllCount(state){
      let c=0
      state.car.forEach(item=>{
        c += item.count
      })
      return c
    },
    getAllPrice(state){
      var o = {
        count:0,  //数量
        allPrice:0 //单价
      }
      state.car.forEach(item=>{
        if (item.selected == true) {
          o.allPrice += item.count
          o.allPrice += item.sell_price * item.count
        }
      })
      return o
    }
  },
  mutations:{
    addToCart(state,goodsinfo){
      
      var flag = false
      //如果购物车存在相同ID的商品，则数量 count+新添加的数量
      state.car.some(item =>{
        if(item.id == goodsinfo.id){
          item.count += parseInt(goodsinfo.count)
          flag =true
          return true
        }
      })      
      // 如果循环完毕还是的到false 就push到购物车
      if(!flag) {
        state.car.push(goodsinfo)
      }

      localStorage.setItem("car",JSON.stringify(state.car))
    }
  },
  //异步操作 可以发送ajax
  actions:{
    //{ commit } 是固定写法 用于调用mutations 里面的函数
    addToCart({ commit }, goodsinfo) {
      // 发送ajax 目的是为了把数据永久存在数据库中，方便下次换电脑
      commit('addToCart', goodsinfo)
    }
  }
})

